package com.aspose.cells;

class zbvt {
   private double[] a;
   private double[] b;

   public double a(double var1, double var3, int var5, boolean[] var6) {
      double var7 = 0.0D;
      double var9 = 0.0D;
      double var11 = 0.0D;

      int var13;
      for(var13 = 0; var13 < this.b.length; ++var13) {
         var7 += this.b[var13];
      }

      if (var7 == 0.0D) {
         var6[0] = true;
         return 0.0D;
      } else {
         for(var13 = 0; var13 < var5; ++var13) {
            var11 = this.b(var1);
            if (var11 == 0.0D) {
               var6[0] = true;
               return var1;
            }

            if ((var7 <= 0.0D || var11 >= 0.0D) && (var7 >= 0.0D || var11 <= 0.0D)) {
               break;
            }

            var1 /= 2.0D;
         }

         var6[0] = false;

         for(var13 = 0; var13 < var5; ++var13) {
            var9 = var1;
            var1 -= this.b(var1) / this.a(var1);
            if (Math.abs(var1 - var9) <= var3) {
               var6[0] = true;
               break;
            }
         }

         return var1;
      }
   }

   public double a(double var1) {
      double var3 = 0.0D;
      double var5 = 0.0D;
      ++var1;

      for(int var7 = 0; var7 < this.b.length; ++var7) {
         var5 = (double)((int)this.a[var7] - (int)this.a[0]) / 365.0D;
         if (var1 >= 0.0D) {
            var3 += -var5 * this.b[var7] * zbc.g(var1, -var5 - 1.0D);
         } else if ((int)var5 % 2 == 0) {
            var3 += -var5 * this.b[var7] * zbc.g(-var1, -var5 - 1.0D);
         } else {
            var3 += var5 * this.b[var7] * zbc.g(-var1, -var5 - 1.0D);
         }
      }

      return var3;
   }

   public double b(double var1) {
      double var3 = 0.0D;
      double var5 = 0.0D;
      ++var1;

      for(int var7 = 0; var7 < this.b.length; ++var7) {
         var5 = (double)((int)this.a[var7] - (int)this.a[0]) / 365.0D;
         if (var1 >= 0.0D) {
            var3 += this.b[var7] * zbc.g(var1, -var5);
         } else if ((int)var5 % 2 == 0) {
            var3 += this.b[var7] * zbc.g(-var1, -var5);
         } else {
            var3 -= this.b[var7] * zbc.g(-var1, -var5);
         }
      }

      return var3;
   }

   Object a(double[] var1, double[] var2, double var3) {
      this.b = var1;
      this.a = var2;
      boolean var5 = false;
      boolean var6 = false;
      boolean var7 = false;

      for(int var8 = 0; var8 < var1.length; ++var8) {
         if (var1[var8] > 0.0D) {
            var6 = true;
         } else if (var1[var8] < 0.0D) {
            var7 = true;
         }
      }

      if (var7 && var6) {
         boolean[] var11 = new boolean[]{var5};
         double var9 = this.a(var3, 1.0E-8D, 100, var11);
         var5 = var11[0];
         if (var5) {
            return var9;
         } else if (var3 == 0.1D) {
            return "#NUM!";
         } else {
            return this.a(var1, var2, 0.1D);
         }
      } else {
         return zst.f;
      }
   }
}
